//1. 导入mysql模块
const mysql = require("mysql");
//2. 建立与MySQL数据库的连接关系
const db = mysql.createPool({
  //数据库IP地址
  host: "127.0.0.1",
  //登录数据库的账号
  user: "root",
  //登录数据库的密码
  password: "265015..flh",
  //指定要操作的数据库
  database: "demo",
});
//检查模块是否配置完善

//query 模块

// db.query("select * from student", (err, data) => {
//   if (err) {
//     console.log(err.message);
//   }
//   console.log(data);
// });

//insert 模块

//1. 准备数据对象
// const student = {
//   number: "1912011108",
//   name: "huo",
//   gender: "女",
//   createDt: "2021-02-06 23:23:39",
// };
//2. 待执行的SQL语句，英文?表示占位符
// const sqlInsert =`insert into student(id,number,name,gender,createDt) values(?,?,?,?,?)`;
//set 向表中新增数据时，如果数据对象的每个属性和数据表的字段一一对应，则可以通过如下方式快速插入数据
//const sqlInsert = `insert into student set ?`;
//3. 使用数组形式，依次为?占位符指定具体的值
// db.query(
//   sqlInsert,
//   // [student.id, student.number, student.name, student.gender, student.createDt],
//   student,
//   (err, res) => {
//     if (err) {
//       return console.log(err.message);
//     }
//     if (res.affectedRows === 1) {
//       console.log("insert successfully");
//     }
//   }
// );

//update模块

// const studentToUpdate = {
//   id: 5,
//   number: "1912011108",
//   name: "huoqi",
//   gender: "女",
//   createDt: "2021-02-06 23:23:39",
// };
// const sqlUpdate = `update student set name=? where id=?`;
//更新表数据时，如果数据对象的每个属性和数据表的字段一一对应，则可以通过如下方式快速更新表数据
// const sqlUpdate = `update student set ? where id=?`;
// db.query(
//   sqlUpdate,
//   // [studentToUpdate.name, studentToUpdate.id],
//   studentToUpdate,
//   (err, res) => {
//     if (err) return console.log("update failed,reasons as followed:" + err);
//     if (res.affectedRows === 1) {
//       console.log("updaeet successfully");
//     }
//   }
// );

//delete模块

const sqlDelete = `delete from student where id=?`;
/**
 * 2．调用db.query()执行SQL语句的同时，为占位符指定具体的值
      注意:如果SQL语句中有多个占位符，则必须使用数组为每个占位符指定具体的值
      如果SQL语句中只有一个占位符，则可以省略数组
 */
db.query(sqlDelete, 5, (err, res) => {
  if (err) return console.log("delete failed,reasons as followed:" + err);
  if (res.affectedRows === 1) {
    console.log("delete successfully");
  }
});
/**
 * 标记删除：
 * 使用DELETE语句，会把真正的把数据从表中删除掉。
 * 为了保险起见，推荐使用标记删除的形式，来模拟删除的动作。
 * 所谓的标记删除，就是在表中设置类似于 status这样的状态字段，来标记当前这条数据是否被删除。
 * 当用户执行了删除的动作时，我们并没有执行DELETE语句把数据删除掉，而是执行了UPDATE语句，将这条数据对应的status字段标记为删除即可。
 */
